
USE SIHMENDOCRI
GO

IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerDiagnosticoDePacientes]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerDiagnosticoDePacientes    
GO
CREATE PROCEDURE sp_obtenerDiagnosticoDePacientes(
	@NUMEROHISTORIA VARCHAR(20),
	@ESENTRENAMIENTO CHAR(2)
)AS
BEGIN

	IF(@ESENTRENAMIENTO = 'SI')
	BEGIN

		SELECT		E.IDDETALLEENFERMEDAD,
					P.APELLIDOPATERNO +' '+P.NOMBRES NOMBRES,
					HC.NUMEROHISTORIA,
					ES.DESCRIPCION,
					ENF.NOMBRE,
					DENF.USOSISTEMAINTELIGENTE USO,
					DENF.NOMBRETECNICO,
					E.VALOR1,
					REPLACE(ISNULL(VALOR,0), '-','0') VALOR,
					E.VALOR2,
					E.VALORCONCATENADO
			
		FROM		dbo.HM_PACIENTE P
		INNER JOIN	dbo.HM_HISTORIACLINICA HC ON P.IDPACIENTE = HC.IDHISTORIACLINICA
		INNER JOIN	dbo.HM_ESTABLECIMIENTOSALUD ES ON HC.IDHISTORIACLINICA =ES.IDESTABLECIMIENTOSALUD
		RIGHT JOIN	(SELECT	 *,(SELECT MAX(ITEMS) FROM ser_fSplit(EV.VALOR1,'/') ) VALOR
					 FROM	 dbo.HM_EVALUACION EV
					) E ON HC.IDHISTORIACLINICA = E.IDHISTORIACLINICA
		LEFT JOIN	dbo.HM_DETALLEENFERMEDAD DENF ON E.IDDETALLEENFERMEDAD=DENF.IDDETALLEENFERMEDAD
		LEFT JOIN	dbo.HM_ENFERMEDAD ENF ON DENF.IDENFERMEDAD = ENF.IDENFERMEDAD
		WHERE		DENF.USOSISTEMAINTELIGENTE ='SI'  
					AND HC.NUMEROHISTORIA =  CASE WHEN @NUMEROHISTORIA='0' THEN HC.NUMEROHISTORIA ELSE @NUMEROHISTORIA END
					AND HC.IDHISTORIACLINICA IN (
						SELECT	* FROM fn_fHistoriasCompletas(0,@NUMEROHISTORIA, @ESENTRENAMIENTO)
					) 
					--AND DENF.IDDETALLEENFERMEDAD IN (50) 
		ORDER BY	HC.NUMEROHISTORIA ASC
	
	END
	ELSE
	BEGIN 
		
		SELECT		E.IDDETALLEENFERMEDAD,
					P.APELLIDOPATERNO +' '+P.NOMBRES NOMBRES,
					HC.NUMEROHISTORIA,
					ES.DESCRIPCION,
					ENF.NOMBRE,
					DENF.USOSISTEMAINTELIGENTE USO,
					DENF.NOMBRETECNICO,
					E.VALOR1,
					REPLACE(ISNULL(VALOR,0), '-','0') VALOR,
					E.VALOR2,
					E.VALORCONCATENADO
			
		FROM		dbo.HM_PACIENTE P
		INNER JOIN	dbo.HM_HISTORIACLINICA HC ON P.IDPACIENTE = HC.IDHISTORIACLINICA
		INNER JOIN	dbo.HM_ESTABLECIMIENTOSALUD ES ON HC.IDHISTORIACLINICA =ES.IDESTABLECIMIENTOSALUD
		RIGHT JOIN	(SELECT	 *,(SELECT MAX(ITEMS) FROM ser_fSplit(EV.VALOR1,'/') ) VALOR
					 FROM	 dbo.HM_EVALUACIONPARADIAGNOSTICO EV
					) E ON HC.IDHISTORIACLINICA = E.IDHISTORIACLINICA
		LEFT JOIN	dbo.HM_DETALLEENFERMEDAD DENF ON E.IDDETALLEENFERMEDAD=DENF.IDDETALLEENFERMEDAD
		LEFT JOIN	dbo.HM_ENFERMEDAD ENF ON DENF.IDENFERMEDAD = ENF.IDENFERMEDAD
		WHERE		DENF.USOSISTEMAINTELIGENTE ='SI'  
					AND HC.NUMEROHISTORIA =  CASE WHEN @NUMEROHISTORIA='0' THEN HC.NUMEROHISTORIA ELSE @NUMEROHISTORIA END
					AND HC.IDHISTORIACLINICA IN (
						SELECT	* FROM fn_fHistoriasCompletas(0, @NUMEROHISTORIA, @ESENTRENAMIENTO)
					) 
					--AND DENF.IDDETALLEENFERMEDAD IN (50) 
		ORDER BY	HC.NUMEROHISTORIA ASC
	
	END		
END				
			
GO


IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[obtenerResultadoDiagnosticoSindromeMetabolico]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE obtenerResultadoDiagnosticoSindromeMetabolico    
GO

CREATE PROCEDURE obtenerResultadoDiagnosticoSindromeMetabolico
(
	@NUMEROHISTORIA VARCHAR(20),
	@ESENTRENAMIENTO CHAR(2)
)
AS
BEGIN

	SELECT * FROM HM_HISTORIACLINICA
	WHERE IDHISTORIACLINICA IN (
					SELECT	* FROM fn_fHistoriasCompletas(0,@NUMEROHISTORIA, @ESENTRENAMIENTO)
				)
		  AND NUMEROHISTORIA =  CASE WHEN @NUMEROHISTORIA='0' THEN NUMEROHISTORIA ELSE @NUMEROHISTORIA END
	ORDER BY NUMEROHISTORIA ASC

END
GO


GO

IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerPacientesValidacion]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerPacientesValidacion    

GO

CREATE PROCEDURE [dbo].[sp_obtenerPacientesValidacion]
AS
BEGIN
    
	select	ROW_NUMBER() over(order by HIS.IDHISTORIACLINICA) ID,  
			EST.DESCRIPCION, 
			HIS.NUMEROHISTORIA, 
			PAC.APELLIDOPATERNO 
			+ ', ' + PAC.NOMBRES AS NOMBRES, 
			HIS.SINDROMEMETABOLICO,
			ISNULL(HIS.RESULTADO,'') AS RESULTADO,
			ISNULL(HIS.SINDROMEMETABOLICO2,'') AS SINDROMEMETABOLICO2
	from	HM_HISTORIACLINICA HIS 
	INNER JOIN HM_PACIENTE PAC ON HIS.IDPACIENTE = PAC.IDPACIENTE
	INNER JOIN HM_ESTABLECIMIENTOSALUD EST ON HIS.IDESTABLECIMIENTOSALUD = EST.IDESTABLECIMIENTOSALUD 
	INNER JOIN (SELECT IDHISTORIACLINICA FROM HM_EVALUACIONPARADIAGNOSTICO GROUP BY IDHISTORIACLINICA ) E ON E.IDHISTORIACLINICA=HIS.IDHISTORIACLINICA

END

GO


IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadPacientesParaChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadPacientesParaChart    

GO

CREATE   PROCEDURE  sp_obtenerCantidadPacientesParaChart
AS
BEGIN

	SELECT		CASE WHEN E.IDHISTORIACLINICA IS NULL 
					THEN 'PARA ENTRENAMIENTO' 
					ELSE 'PARA PRUEBAS' END DESCRIPCION ,
					COUNT(*) CANTIDAD 
		  FROM	HM_PACIENTE P
	INNER JOIN	HM_HISTORIACLINICA HC ON P.IDPACIENTE = HC.IDPACIENTE
	LEFT  JOIN (SELECT IDHISTORIACLINICA 
				FROM HM_EVALUACIONPARADIAGNOSTICO 
				GROUP BY IDHISTORIACLINICA 
				) E ON E.IDHISTORIACLINICA=HC.IDHISTORIACLINICA
	GROUP BY	CASE WHEN E.IDHISTORIACLINICA IS NULL 
					THEN 'PARA ENTRENAMIENTO' 
					ELSE 'PARA PRUEBAS' END
			
END
GO



IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadPacientesPorEstablecimientoSaludChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadPacientesPorEstablecimientoSaludChart    

GO

CREATE   PROCEDURE  sp_obtenerCantidadPacientesPorEstablecimientoSaludChart
AS
BEGIN

	SELECT		ES.DESCRIPCION, COUNT(*) CANTIDAD
		  FROM	HM_PACIENTE P
	INNER JOIN	HM_HISTORIACLINICA HC ON P.IDPACIENTE = HC.IDPACIENTE
	INNER JOIN  HM_ESTABLECIMIENTOSALUD ES ON HC.IDESTABLECIMIENTOSALUD = ES.IDESTABLECIMIENTOSALUD
	GROUP BY	ES.DESCRIPCION

END 
GO

IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadEdadPacientesChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadEdadPacientesChart    
GO


CREATE   PROCEDURE  sp_obtenerCantidadEdadPacientesChart
AS
BEGIN

	SELECT * INTO #TM_HM_EVALUACION FROM (
		SELECT IDHISTORIACLINICA,VALOR1 FROM HM_EVALUACIONPARADIAGNOSTICO WHERE IDDETALLEENFERMEDAD = 1
		UNION 
		SELECT IDHISTORIACLINICA,VALOR1 FROM HM_EVALUACION WHERE IDDETALLEENFERMEDAD = 1
	)T


	SELECT '< 0 - 30]' DESCRIPCION, COUNT(*) CANTIDAD FROM #TM_HM_EVALUACION WHERE  VALOR1 > 0 AND VALOR1 <= 30
	UNION ALL
	SELECT '<30 - 40]' DESCRIPCION, COUNT(*) CANTIDAD FROM #TM_HM_EVALUACION WHERE  VALOR1 > 30 AND VALOR1 <= 40
	UNION ALL
	SELECT '<40 - 50]' DESCRIPCION, COUNT(*) CANTIDAD FROM #TM_HM_EVALUACION WHERE  VALOR1 > 40 AND VALOR1 <= 50
	UNION ALL													 
	SELECT '<50 - 60]' DESCRIPCION, COUNT(*) CANTIDAD FROM #TM_HM_EVALUACION WHERE  VALOR1 > 50 AND VALOR1 <= 60
	UNION ALL
	SELECT '<60 - ~ ]' DESCRIPCION, COUNT(*) CANTIDAD FROM #TM_HM_EVALUACION WHERE  VALOR1 > 60 

	
	DROP TABLE #TM_HM_EVALUACION
END
GO


IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadPacientesPorSexoChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadPacientesPorSexoChart    
GO


CREATE   PROCEDURE  sp_obtenerCantidadPacientesPorSexoChart
AS
BEGIN

	SELECT * INTO #TM_HM_EVALUACION FROM (
		SELECT IDHISTORIACLINICA,VALOR1 FROM HM_EVALUACIONPARADIAGNOSTICO WHERE IDDETALLEENFERMEDAD = 4
		UNION 
		SELECT IDHISTORIACLINICA,VALOR1 FROM HM_EVALUACION WHERE IDDETALLEENFERMEDAD = 4
	)T


	SELECT  CASE WHEN VALOR1 = 'F' THEN 'FEMENINO' ELSE 'MASCULINO' END DESCRIPCION, COUNT(*) CANTIDAD
	  FROM #TM_HM_EVALUACION GROUP BY VALOR1
	
	DROP TABLE #TM_HM_EVALUACION

END
GO

IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadPacientesConSMEnEntrenamientoChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadPacientesConSMEnEntrenamientoChart    
GO

CREATE  PROCEDURE  sp_obtenerCantidadPacientesConSMEnEntrenamientoChart
AS
BEGIN

	SELECT CASE WHEN SINDROMEMETABOLICO = '1' THEN 'SI tiene SM' ELSE 'NO tiene SM'END DESCRIPCION, COUNT(*) CANTIDAD from HM_HISTORIACLINICA
	where IDHISTORIACLINICA IN (SELECT IDHISTORIACLINICA FROM HM_EVALUACION)
	GROUP BY SINDROMEMETABOLICO

END
GO


IF EXISTS (SELECT * FROM  dbo.sysobjects WHERE id = object_id(N'[dbo].[sp_obtenerCantidadPacientesConSMEnPruebasChart]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE sp_obtenerCantidadPacientesConSMEnPruebasChart    
GO

CREATE   PROCEDURE  sp_obtenerCantidadPacientesConSMEnPruebasChart
AS
BEGIN

	SELECT CASE WHEN SINDROMEMETABOLICO = '1' THEN 'SI tiene SM' ELSE 'NO tiene SM'END DESCRIPCION, COUNT(*) CANTIDAD from HM_HISTORIACLINICA
	where IDHISTORIACLINICA IN (SELECT IDHISTORIACLINICA FROM HM_EVALUACIONPARADIAGNOSTICO)
	GROUP BY SINDROMEMETABOLICO

END



--SELECT IDEVALUACION,IDHISTORIACLINICA,IDDETALLEENFERMEDAD,VALOR1,VALOR2 FROM HM_EVALUACION
--SELECT IDEVALUACION,IDHISTORIACLINICA,IDDETALLEENFERMEDAD,VALOR1,VALOR2 FROM HM_EVALUACIONPARADIAGNOSTICO
--SELECT * FROM HM_ENFERMEDAD 
--SELECT * FROM HM_DETALLEENFERMEDAD 

--SELECT * FROM HM_ENFERMEDAD E
--INNER JOIN HM_DETALLEENFERMEDAD DE ON E.IDENFERMEDAD = DE.IDENFERMEDAD

--WHERE DE.USOSISTEMAINTELIGENTE = 'SI'
	


--SELECT * FROM HM_HISTORIACLINICA HC
--INNER JOIN HM_EVALUACION EV ON HC.IDHISTORIACLINICA = EV.IDHISTORIACLINICA
--INNER JOIN HM_DETALLEENFERMEDAD DE ON EV.IDDETALLEENFERMEDAD = DE.IDDETALLEENFERMEDAD
--INNER JOIN HM_ENFERMEDAD E ON E.IDENFERMEDAD = DE.IDENFERMEDAD
--WHERE DE.USOSISTEMAINTELIGENTE = 'SI'
--		AND E.IDENFERMEDAD = 2

